#pragma once
#include <string>
#include <list>
#include <ctime>
#include <memory>
#include "../../../utils/common_ptr.h"

class SQLExpr;
class SQLDataType;
class SQLInListExpr;
class Object;
class DbType;

class SQLExprUtils
{
public:
  static bool equals(SQLExpr_ptr a, SQLExpr_ptr b);

  static BOOL_ptr isLiteralExpr(SQLExpr_ptr expr);

  static SQLExpr_ptr fromJavaObject(Object_ptr o);

  static SQLExpr_ptr fromJavaObject(Object_ptr o, time_t timeZone);

  static SQLInListExpr *conditionIn(string_ptr  column, Object_list_ptr  values, time_t timeZone);

  static string_ptr  quote(string_ptr  str, DbType_ptr  dbType, char quote);

  static SQLDataType_ptr createDataTypeFromJdbc(DbType_ptr  dbType, int jdbType, int precision, int scale);
};
